31. 矩阵求逆
矩阵求逆
在使用卡尔曼滤波器方程的过程中,你还需要学习一种矩阵运算:逆矩阵。
特别是在计算卡尔曼滤波器增益矩阵 \mathbf{K} 时,你需要对 \mathbf{S} 矩阵进行求逆运算。上标符号 ^{-1} 表示逆矩阵。下面是卡尔曼滤波器增益方程的一个小提示,其中你可以看到 对 S 求逆的必要性。
\mathbf{S_{k}} = \mathbf{H_{k}} \mathbf{P_{k|k-1}} \mathbf{H_{k}^T} + \mathbf{R_{k}}
\mathbf{K_{k}} = \mathbf{P_{k|k-1}} \mathbf{H_{k}^T} \mathbf{S_{k}}^{-1}
逆矩阵的正式定义
如上所述,矩阵 \mathbf{A} 的逆矩阵可以表示为 \mathbf{A^{-1}} 。
形式上,如果矩阵 \mathbf{A} 有逆矩阵,那么
\mathbf{A} \times \mathbf{A^{-1}} = \mathbf{A^{-1}} \times \mathbf{A} = \mathbf{I}
其中 \mathbf{I} 是一个单位矩阵。
只有方矩阵,即行数等于列数的矩阵,才具有逆矩阵。你可以看到,根据逆矩阵和单位矩阵的定义,这肯定是正确的。单位矩阵始终为方矩阵,因此
如果 \mathbf{A} 大小为 m x n,那么 \mathbf{A^{-1}} 大小必须为 n x m 才能得到 m x m 的方标识矩阵。
\mathbf{A^{-1}} \mathbf{A} 相乘得出 (n x m)(n x m) = n x m,只有 n = m,它才是一个方矩阵。
矩阵要具备逆矩阵,必须为方矩阵。同时,并非所有方矩阵都有逆矩阵。
标量倒数和逆矩阵的关系
在标量数学中,数字 x 的倒数是 1/x 。
标量乘以一个标量的倒数,结果为 1:
x \times \frac{1}{x} = 1
在线性代数中,逆矩阵与标量倒数相似:
\mathbf{A} \times \mathbf{A^{-1}} = \mathbf{I}
在本课前一部分,你已经学过,标识矩阵的功能和数字 1 类似。
计算逆矩阵
在本堂课上,你需要学习计算 1x1 矩阵和 2x2 矩阵的逆矩阵。
矩阵越大, 计算越复杂 。Python 和 C ++ 都有能够计算矩阵的逆矩阵的库,例如 NumPy 库 和 Eigen 库 。
1 x 1 矩阵的逆矩阵
对于带有值为 a 的单个元素的 1 \times 1 矩阵,逆矩阵为 \frac{1}{a} 。
因此,
\begin{bmatrix}25\end{bmatrix} 的逆矩阵为
\begin{bmatrix}\frac{1}{25}\end{bmatrix} 。
2 x 2 矩阵的逆矩阵
假设有矩阵
\begin{bmatrix}a & b \\\ c & d\end{bmatrix}
这个 2 x 2 矩阵的逆矩阵为
\frac{1}{ad - bc}\begin{bmatrix}d & -b \\\ -c & a\end{bmatrix}
你可以看到,如果 ad = bc ,则该矩阵没有逆矩阵。
2x2 矩阵逆矩阵的另一个公式
下面是 2x2 矩阵逆矩阵的另一个更为正式的公式:
\mathbf{A}^{-1} = \frac{1}{\text{det }\mathbf{A}} \left[\left(\text{tr } \mathbf{A}\right) \mathbf{I} - \mathbf{A}\right]
其中
\text{det }\mathbf{A} 被称为矩阵的行列式。对于 2x2 矩阵,行列式为ad - bc。
\text{tr } \mathbf{A} 叫做矩阵轨迹。轨迹是跨主对角线的和,在本例中是 a + d。
如果把所有的元素相乘,最终会得出同样的方程,即:
\mathbf{A^{-1}} =\frac{1}{ad - bc}\begin{bmatrix}d & -b \\\ -c & a\end{bmatrix}
3 x 3 或更大矩阵的逆矩阵
计算更大矩阵的逆矩阵需要相对复杂的矩阵代数理论。在本课中,你只需要计算 2×2 矩阵的逆矩阵。
逆矩阵编程
你需要写一个函数来计算矩阵的逆矩阵。请记住,你需要检查矩阵的大小,因为 1x1 矩阵和 2x2 的公式不同。